#ifndef AHXGWNET_SOCKET_H_
#define AHXGWNET_SOCKET_H_

#include "proto.h"
#include <netinet/in.h>
#include <string>

namespace ahxgwnet {

/**
 * 基本socket函数
 */
class Socket
{
public:
    Socket();
    ~Socket();
    bool connect(const char *ip, int port);
    bool bind(int port);
    bool listen(int backLog);
    int accept(Socket& cli);
    void close();
    bool getSockName(std::string &ip);
    bool getPeerName(std::string &ip);
    bool setReuseAddress();
    bool setIntOption(int option, int value);
    
    int         m_s;        /* 套接字 */
    
private:
    SAI         m_addr;     /* 套接字地址 */
    socklen_t   m_addrLen;  /* 地址长度 */
};

}

#endif
